package org.jeecg.modules.appuser.aop;

import ch.ethz.ssh2.*;
import com.pdd.pop.sdk.http.PopClient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Main {
    //#开发环境
    //#数据服务器的ip地址
    private static String dataServerIp = "47.114.186.184";
    // #数据服务器的用户名
    private static String dataServerUsername = "root";
    //#数据服务器的密码
    private static String dataServerPassword = "uj!D2rQ*mmZ*";
    //#数据服务器的目的文件夹
    private static String dataServerDestDir = "/usr/project/";
    private static String localDir = "E:/testCode/netmall-master/netmall-system/netmall-module-system/target/";

    public static void main(String[] args) {
        //文件scp到数据服务器
        Connection conn = new Connection(dataServerIp);
        SFTPv3Client sftpClient = null;
        Session session = null;
        System.out.println("开始scp文件");
        try {
            conn.connect();
            boolean isAuthenticated = conn.authenticateWithPassword(dataServerUsername, dataServerPassword);
            if (isAuthenticated == false)
                throw new IOException("Authentication failed.文件scp到数据服务器时发生异常");

//            sftpClient = new SFTPv3Client(conn);
//            在root的目录~下创建文件夹,无法切换目录
//            sftpClient.mkdir("10092", 0755); //成功，远程新建目录 ,第二个参数是创建的文件夹的读写权限,0755->即用户具有读/写/执行权限，组用户和其它用户具有读写权限；
//            sftpClient.mkdir("/10092/input",0755);//失败
//            sftpClient.mkdir(dataServerDestDir+"10092/input",0755);//失败
//            sftpClient.rmdir("oldRemoteDir"); //远程删除目录
//            sftpClient.rm("file");//远程删除文件

            //执行远程命令，成功
            session = conn.openSession();
            //   session.execCommand("cd "+dataServerDestDir+" ; mkdir 10092 ; cd 10092 ; mkdir input ;mkdir output ");//分号隔开执行多条指令
            session.execCommand("cd " + dataServerDestDir + " ;");//分号隔开执行多条指令
            //显示执行命令后的信息
            InputStream stdout = new StreamGobbler(session.getStdout());
            BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
            while (true) {
                String line = br.readLine();
                if (line == null) {
                    System.out.println("session，远程服务器返回信息:空");
                    break;
                }
                System.out.println("session，远程服务器返回信息:" + line);
            }
            //获得退出状态
            System.out.println("session，ExitCode: " + session.getExitStatus());//返回0 表示命令执行成功；返回1 表示执行失败
            session.close();

            //远程文件复制到本地成功
            SCPClient client = new SCPClient(conn);
           client.get(localDir + "netmall-module-system-0.0.1.jar", dataServerDestDir);//成功，


        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("文件scp到数据服务器时发生异常");
            if (conn != null) {
                conn.close();
            }
            if (sftpClient != null) {
                sftpClient.close();
            }
            if (session != null) {
                session.close();
            }

        } finally {
            if (conn != null) {
                conn.close();
            }
            if (sftpClient != null) {
                sftpClient.close();
            }
            if (session != null) {
                session.close();
            }
        }
        System.out.println("scp文件结束");
    }
}
